<?php
class Intranet_RotinaController extends AcessoRestritoController
{
        public function  indexAction(){
		
	}
	public function listaAction()
	{
		$this->_helper->viewRenderer->setNoRender();
		$dao  = new Rotina();
		$dados = $dao->lista($this->_getAllParams()); 
		$this->_response->setBody(Zend_Json::encode($dados)); 
		
	}
	
        public function vrfcamostraAction()
        {
            	$this->_helper->viewRenderer->setNoRender();
		$dao  = new Amostra();
                $id   = $this->_request->getParam('id');
                $dados = $dao->vrfcAmostra($id); 
		$this->_response->setBody(Zend_Json::encode($dados)); 
	
        }
        
        public function existeamostraAction()
        {
            	$this->_helper->viewRenderer->setNoRender();
		$dao  = new tempRotinaAmostra();
                $idAmostra   = $this->_request->getParam('id');
                $idtemp = $this->_request->getParam('idtemp');
                 
                
                $dados = $dao->_existeAmostra($idAmostra, $idtemp); 
		$this->_response->setBody(Zend_Json::encode($dados)); 
	
        }
        public function vrfcclienteAction()
        {
                 $dados = "";
            	$this->_helper->viewRenderer->setNoRender();
		$dao  = new Cliente();
                $id   = $this->_request->getParam('id');
		$dados = $dao->_getNomeCliente($id); 
                $nome  = $dados['nomeCurto'];
                $this->_response->setBody(Zend_Json::encode($nome)); 
	
        }
        
        public function getmaxrotinaAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $dao  = new tempRotinaAmostra();
            $dados = $dao->_getMaxIdTemp(); 
            $this->_response->setBody(Zend_Json::encode($dados)); 
        }
        
         public function getamostrasAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $dao  = new tempRotinaAmostra();            
            $idtemp      = $this->_request->getParam('idtempRotina');
            $dados = $dao->_getAmostras($idtemp,$this->_getAllParams()); 
            $this->_response->setBody(Zend_Json::encode($dados)); 
        }
        
        public function addamostraAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $dao  = new Amostra();
            $id   = $this->_request->getParam('id');
            $inicial   = strtoupper($this->_request->getParam('inicial'));
            $idcliente   = $this->_request->getParam('cliente');
           
            
            $amostra = array($id,$inicial,$idcliente,$this->getIdLogin());
           
            $dados = $dao->add($amostra);
                         $this->_response->setBody(Zend_Json::encode($dados));
        }
        
        public function addtempsolAction()
        {
            	$this->_helper->viewRenderer->setNoRender();
                $daoR = new SolicitacaoAmostra();                
                $dao  = new tempRotinaAmostra();
                
                $idAmostra   = $this->_request->getParam('idAmostra');
                $idtemp      = $this->_request->getParam('idRotinaTemp');
                
                $retorno = true;
                $numseq = $dao->_getMaxNumSeq($idtemp);
               
                $dados = $dao->add($idtemp,$idAmostra,$numseq);   
                
                if(!$dados)
                {
                  if($retorno)
                    $retorno = $dados;
                }
              
               
                $this->_response->setBody(Zend_Json::encode($retorno));
	
        }
        
        public function removeamostratAction()
        {
            	$this->_helper->viewRenderer->setNoRender();
                $dao  = new tempRotinaAmostra();
                $idAmostra   = $this->_request->getParam('id');
              
                $idtemp      = $this->_request->getParam('idtemp');
           
                $dados  = $dao->removeAmostra($idtemp, $idAmostra);
                $this->_response->setBody(Zend_Json::encode($dados));
	
        }
        public function addAction()
        {
                $retorno = true;
                
            	$this->_helper->viewRenderer->setNoRender();
                $daoR = new Rotina();
                $daoRA = new RotinaAmostra();
                $daoA  = new tempRotinaAmostra();
                $daoE  = new tempRotinaExame();
                $daoExame = new Exame();
                $daoSolic = new SolicitacaoAmostra();
                $daoAmostra = new Amostra();
                $idtemp      = $this->_request->getParam('id');
                $tempExame   = $daoE->getExameTemp($idtemp);
                $tempAmostra = $daoA->getAmostraTemp($idtemp);
                
                try {
                                              
                            $rotina = $daoR->createRow();
                            $rotina->dataRotina = date('y-m-d');
                            $rotina->dataCadastro = date('y-m-d');
                            $rotina->situacao_rotina = 'P';
                            $rotina->idUsuCad = $this->getIdLogin();
                            $idRotina = $rotina->save();


                            foreach ($tempExame as $key => $value) {

                                if($value->idKitSorologia!=null)
                                {
                                    $metodologia = $daoExame->_getExameMetodo($value->idExame);
                                    
                                    foreach ($tempAmostra as $key => $amostra) {
                                        $amostra_a     = $daoAmostra->_getAmostra($amostra->idAmostra);
                                            
                                        $rotinaAmostra = $daoRA->createRow();
                                        $rotinaAmostra->idRotina = $idRotina;
                                        $rotinaAmostra->idExame  = $value->idExame;
                                        $rotinaAmostra->numColeta = 1;
                                        $rotinaAmostra->idAmostra = $amostra->idAmostra;
                                        $rotinaAmostra->seqAmostra = $amostra->seqAmostra;
                                        $rotinaAmostra->idKitSorologia = $value->idKitSorologia;
                                        $rotinaAmostra->idMetodologia  = $metodologia->idMetodologia;
                                        
                                        
                                        $result= $rotinaAmostra->save();
                                        $resSol = $daoSolic->concluiSolicitacao($amostra->idAmostra, $amostra_a->idCliente, $value->idExame);
                                       

                                      
                                            

                                     }
                                }
                            }

                            $daoE->delTempExame($idtemp);
                            $daoA->del($idtemp);

                 } catch (Exception $exc) {
                    echo $exc->getTraceAsString();
                }
                
                
                $this->_response->setBody(Zend_Json::encode($retorno));
	
        }
        
        
        public function solicitacaoAction()
	{
		$this->_helper->viewRenderer->setNoRender();
		$dao  = new Solicitacao();
		$dados = $dao->lista($this->_getAllParams());
		$this->_response->setBody(Zend_Json::encode($dados)); 
		
	}

        public function setkitexameAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $kitsorologia = $this->_request->getParam('kitsorologia');
            $idExame      = $this->_request->getParam('id');
            print_r($idExame);
            exit();
            
		
        }
        public function getexamesAction()
	{
		$this->_helper->viewRenderer->setNoRender();
		$dao  = new Exame();
                $dados = $dao->_getExames($this->_getAllParams()); 
		$this->_response->setBody(Zend_Json::encode($dados)); 
		
	}
        
        public function solamostraAction()
        {
		$this->_helper->viewRenderer->setNoRender();
		$dao  = new SolicitacaoAmostra();
                $dados = $dao->getAmostraSol($this->_getAllParams());//*** retorna todos os parametros 
                 
		$this->_response->setBody(Zend_Json::encode($dados));//* echo json_enconde()
            
        }
        
        
        public function metodologiaAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $dao    = new Metodologia();
            $dados = $dao->_getMetodologias();
            $this->_response->setBody($dados);
        }
         public function kitsorologiaAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $dao    = new Kitsorologia();
            $dados = $dao->_getKitsSorologicos();
            
            $this->_response->setBody($dados);
        }
	public function novoAction()
	{
		$dao_exame = new Exame();
		//$exames =  $dao_exame->_getListExames();
		$dao_cliente = new Cliente();
		$cliente =  $dao_cliente->_getClientes();

		//$this->view->assign('exame',$exames);
		$this->view->assign('cliente',$cliente);		
		
		  
		
        }
	
	
	public function vrfcAction()
	{
		$id   = $this->_request->getParam('idRotina');
		$data = $this->_request->getParam('data');
		
		$dao = new Rotina();
		$status = $dao->_vrfcBateria($id, $data);
		
		echo '{"status":'.$status.'}';
		exit();
	}
        
        public function addexametempAction()
        {
            
                $this->_helper->viewRenderer->setNoRender();
                $idtemp          = $this->_request->getParam('idtemp');
                $daote = new tempRotinaExame();
                $result_e = $daote->_getExame($idtemp);
                
                print_r($result_e);
               
               if($result_e==1)
               {
                    
             
                $dao  = new tempRotinaExame();
                $daoE = new Exame();
                 
                $retorno = true;
                $exame = $daoE->_getListExames();
              
                foreach ($exame as $key => $value) {
                    print_r($value['idExame']);
                    $dados = $dao->add($idtemp,$value['idExame']); 
                    if(!$dados)
                    {
                       if($retorno)
                        $retorno = $dados;
                    }
                }
               }
                $this->_response->setBody(Zend_Json::encode($retorno));
	
        }
        
        public function editexametempAction()
        {
                $this->_helper->viewRenderer->setNoRender();
            
                $dao  = new tempRotinaExame();
                $array = array();
                $array = $this->_getAllParams();
           
              
                $idtemp          = $this->_request->getParam('idtemp');
                $idExame         = $array['id'];
                $idKitSorologia  = $array['kitsorologia'];
                
               
                
                $retorno = true;
                
                $dados = $dao->edit($idtemp, $idExame, $idKitSorologia); 
                
                if(!$dados)
                {
                   if($retorno)
                    $retorno = $dados;
                }
                
                $this->_response->setBody(Zend_Json::encode($retorno));
        }
        
        public function vrfcexamekitAction()
        {
             $this->_helper->viewRenderer->setNoRender();
             $dao =  new tempRotinaExame();
             $idtemp  = $this->_request->getParam('idtemp');
             $exames   = $this->_request->getParam('exames');
             
           
             $exameList = array();
             $exameList = explode(',', $exames);
                
             $result = true;
             for($i = 0; $i < sizeof($exameList); ++$i)
             {
             
               $tempEx = $dao->getExameTemp($idtemp,$exameList[$i]);
               if($tempEx->idKitSorologia==null)
               {
                   $result = false;
               }
               
             }
             
             $this->_response->setBody(Zend_Json::encode($result));
            
        }
        
	public function alterarAction()
	{
            $idRotina = $this->_request->getParam('idRotina');
            $this->view->assign("idRotina",$idRotina);
	}
        
        public function liberarAction()
        {
            $idRotina = $this->_request->getParam('idRotina');
            $this->view->assign("idRotina",$idRotina);
        }
        
        public function examesAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $rotinaAmostra = new RotinaAmostra();
            $idRotina = $this->_request->getParam('id');
            $dados = $rotinaAmostra->grid($idRotina, $this->_getAllParams());
            $this->_response->setBody(Zend_Json::encode($dados));
        }
    
        public function amostrasAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $rotinaAmostra = new RotinaAmostra();
            $idExame = $this->_request->getParam('idExame');
            $idRotina = $this->_request->getParam('idRotina');
            $dados = $rotinaAmostra->subgrid($idExame, $idRotina, $this->_getAllParams()); 
            $this->_response->setBody(Zend_Json::encode($dados));
        }
    
        private function autenticaUsuario($login, $senha)
        {
            $authAdapter = Zend_Registry::get('authAdapter');
            $authAdapter->setTableName('usuario')
                                    ->setIdentityColumn('login')
                                    ->setCredentialColumn('senha');

            $authAdapter->setIdentity(strtolower($login))
                                    ->setCredential(md5($senha));

            $result = $authAdapter->authenticate();
            if($result->isValid())
            {
                $info = $authAdapter->getResultRowObject(null, 'senha');
                if ( $info->tipoUsuario == 'L')
                    $retorno = true;
                else
                    $retorno = false;
            }
            else
            {
                $retorno = false;
            }
            return $retorno;
        }
        public function autenticarAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $loginBio = $_POST['loginBio'];
            $senhaBio = $_POST['senhaResp'];
            $loginAux = $_POST['loginAux'];
            $senhaAux = $_POST['senhaAux'];
            
            $retornobio = $this->autenticaUsuario($loginBio,$senhaBio);
            $retornoaux = $this->autenticaUsuario($loginAux,$senhaAux);
             
            if($retornobio && $retornoaux)
              echo '{"status":"true"}';  
            else
              echo '{"status":"false"}'; 
        
        }

        public function librotinaAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $idRotina = $_POST['idRotina'];
            
            $daoU  = new Usuario();
            $idUsuBio = $daoU->_getiDUsuario($_POST['loginBio']);
            $idUsuAux = $daoU->_getiDUsuario($_POST['loginAux']);
            
            
            $dao = new Rotina();
            $daoRemessa = new Remessa();
            try
            {
        
                    $dados = $dao->libRotina($idRotina, $idUsuBio->idUsuario, $idUsuAux->idUsuario);
                   
                    $dadosRotinaAmostra = $dao->getClienteRotina($idRotina);
                    $cliente = 0;     
                    
                    foreach ($dadosRotinaAmostra as $key => $value) {
                           if($cliente!=$value['idCliente'])
                           {
                              $cliente = $value['idCliente'];
                              $remessa = $daoRemessa->createRow();
                              $remessa->idCliente = $cliente;
                              $remessa->idLiberacaoRotina = $dados['idLiberacaoRotina'];
                              $remessa->dataRemessa = date('y-m-d');
                              $remessa->idUsuCad = $this->getIdCliente();
                              $idRemessa = $remessa->save();
                           }
                    }

              echo '{"status":"true"}';  
            
            }
            catch (Zend_Exception $e)
            {
              echo '{"status":"false"}';  
            }
            
               
        
        }
    
        public function visualizarAction()
        {
            $idRotina = $this->_request->getParam('idRotina');
            $this->view->assign("idRotina",$idRotina);
        }
    
        public function delrotinaAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $idRotina = $this->_request->getParam('idRotina');
            $rotina = new Rotina();
            $dados = $rotina->deletarRotina($idRotina);
            print_r($dados);
            $this->_response->setBody($dados);
        }
        
        public function concluirrotinaAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $rotina = new Rotina();
            $idRotina = $this->_request->getParam('idRotina');
            $usuario = $this->getIdLogin();
            $dados = $rotina->concluirRotina($idRotina, $usuario);
            print_r($dados);
            $this->_response->setBody($dados);
        }

        public function delexaamostraAction()//*************
        {
            $this->_helper->viewRenderer->setNoRender();
            $idRotina = $this->_request->getParam('idRotina');
            $idAmostra = $this->_request->getParam('idAmostra');
            $idExame = $this->_request->getParam('idExame');
            $rotinaAmostra = new RotinaAmostra();
            $dados = $rotinaAmostra->delExaAmostra($idRotina, $idAmostra, $idExame);
            $this->_response->setBody($dados);
        }
        
        public function vrfcressemrespAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $idRotina = $this->_request->getParam('idRotina');
            $resultado = new Resultado();
            $dados = $resultado->vrfcResSemResp($idRotina);
            $this->_response->setBody(Zend_Json::encode($dados)); 
        }
        
        public function possoliberarAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $rotina = new Rotina();
            $idRotina = $this->_request->getParam('idRotina');
            $dados = $rotina->possoLiberar($idRotina);
            $this->_response->setBody(Zend_Json::encode($dados)); 
        }
        
        public function vrfresultadoAction()
        {
            $this->_helper->viewRenderer->setNoRender();
            $resultado = new Resultado();
            $idRotina = $this->_request->getParam('idRotina');
            $idExame = $this->_request->getParam('idExame');
            $idAmostra = $this->_request->getParam('idAmostra');
            $dados = $resultado->vrfcAmoResultado($idRotina, $idExame, $idAmostra);
            $this->_response->setBody(Zend_Json::encode($dados)); 
        }
}